package com.wy.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.github.pagehelper.PageInfo;
import com.wy.dto.GoodsInfoDto;
import com.wy.entity.GoodsInfo;
import org.springframework.web.bind.annotation.PathVariable;

import java.math.BigDecimal;

/**
 * @Author:王渝
 * @Date: 2022/11/30  11:10
 * @Version 1.0
 */
public interface GoodsInfoService extends IService<GoodsInfo> {

    /**
     * 根据状态分页查询
     * @param currentPage 当前页
     * @param pageSize 一页的数量
     * @param status 状态状态（1未审核 2审核通过 3审核未通过 4已完成交易 5流拍）
     * @return
     */
    PageInfo<GoodsInfo> queryPage(int currentPage, int pageSize, String status);

    /**
     * 根据状态分页查询
     * @param currentPage 当前页
     * @param pageSize 一页的数量
     * @param status 状态状态（1未审核 2审核通过 3审核未通过 4已完成交易 5流拍）
     * @param userId 用户id
     * @return
     */
    PageInfo<GoodsInfo> queryPageByUserId(int currentPage, int pageSize, String status,Long userId);

    /**
     * 根据商品id查询详细信息（管理员端）
     * @param goodsId 商品id
     * @return
     */
    GoodsInfoDto queryDetailById(Long goodsId);

    /**
     * 根据商品id查询详细信息（用户端）
     * @param goodsId 商品id
     * @return
     */
    GoodsInfoDto queryDetailById2(Long goodsId);

    /**
     *
     * @param currentPage 当前页
     * @param pageSize 一页的数量
     * @param type 类型名称
     * @return
     */
    PageInfo<GoodsInfo> queryPageByType(int currentPage, int pageSize, String type);

    /**
     * 添加商品
     * @param goodsInfo 商品信息
     * @return
     */
    boolean addGoods(GoodsInfo goodsInfo);

    /**
     * 更具时间更新状态
     * @return
     */
    int updateStatus();

    /**
     * 根据商品id查询用户邮箱
     * @param goodsId 商品id
     * @return
     */
    String queryEmailByGoodsId(Long goodsId);

    /**
     * 根据id查询商品的最高出价
     * @param goodsId
     * @return
     */
    BigDecimal queryMaxPrice(Long goodsId);


    /**
     *根据用户id查询所有商品
     * @param currentPage 当前页
     * @param pageSize 一页的数量
     * @param userId 用户id
     * @return
     */
    PageInfo<GoodsInfo> queryPageByUserId(int currentPage, int pageSize, Long userId);

    /**
     *根据用户id查询所有商品
     * @param currentPage 当前页
     * @param pageSize 一页的数量
     * @param userId 用户id
     * @return
     */
    PageInfo<GoodsInfo> queryPageByUserId2(int currentPage, int pageSize, Long userId);
}
